#include "buzzer.h"

uint32_t buzzer_count_ms = 0;

/** @brief 蜂鸣器初始化
  *	@biref Buzzer IO 配置
  * @retval none
  */
void buzzer_init(void)
{
	/* 定义 GPIO 初始化结构体 */
    gpio_init_type gpio_init_struct;

    /* 使能 GPIOA 外设时钟 */
    crm_periph_clock_enable(BUZZER_CRM_PERIPH_CLOCK, TRUE);

    /* 设置默认参数 */
    gpio_default_para_init(&gpio_init_struct);

    /* 配置 GPIO 参数 */
    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER; /* 较大电流推动/吸入能力 */
    gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
    gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
    gpio_init_struct.gpio_pins = BUZZER_PIN;
    gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
    gpio_init(BUZZER_GPIOX, &gpio_init_struct);
}

/** @brief 蜂鸣器滴滴响
  *	@biref 
  * @param period
  *        设定蜂鸣器滴滴响的周期，单位 ms（毫秒）
  * @retval none
  */
void buzzer_run(uint16_t period)
{
	if (period == 0) {
		BUZZER_OFF();
		return;
	}
	
	if (buzzer_count_ms > period) {
		buzzer_count_ms = 0;
		BUZZER_GPIOX->odt ^= BUZZER_PIN;
	}
}
